<?php
/**
 * Created by PhpStorm.
 * User: edmmss
 * Date: 2018/12/19
 * Time: 17:57
 */

namespace app\modules\mediator\controller;

use app\modules\mediator\Mediator;
use app\modules\mediator\subsystem\Client;
use app\modules\mediator\subsystem\Database;
use app\modules\mediator\subsystem\Server;
use yii\web\Controller;

class DefaultController extends Controller
{
    /**
     * 中介者模式示例
     * 本模式提供了一种轻松的多组件之间弱耦合的协同方式。
     * 如果你有个“情报中心”，观察者模式也是个好选择，类似于控制器（并非 MVC 意义上的控制器）。
     * 所有关联协同的组件（称作 Colleague）仅与 MediatorInterface 接口建立耦合，面向对象编程中这是好事，一个良友胜于有多个朋友。这是该模式的重要特性。
     *
     * @date   2018/12/20
     * @author edmmss
     * @return bool
     */
    public function actionIndex()
    {
        $client = new Client();
        $database = new Database();
        $server = new Server();

        $mediator = new Mediator($database, $client, $server);

        $mediator->sendResponse(1212);
        $mediator->makeRequest();
        var_dump($mediator->queryDb());
        $client->request();

        return true;
    }
}